Virtualization, such as the use of a virtual machine, may be used to provide some physical components as logical objects in order to allow running various software modules. Virtualization allows, for example, consolidating multiple physical servers into one physical server running multiple virtual machines in order to improve the hardware utilization rate. Virtualization may typically involve a virtual machine executing for intermittent periods of time on one or more physical processors.
A container may be a virtualized object similar to a virtual machine except that, typically, a container may not implement a guest operating system and may, for example, instead utilize a host operating system of a physical machine. One or more applications and/or utilities may execute in a container. A container may have one or more respective, filesystems, memory, devices, network ports, etc. for accessing the physical resources of the physical machine and other resources outside of the physical machine. Specific requests to access physical resources inside or outside of the physical machine may be made through the host operating system.
Typically, containers may be launched to provide extra compute capacity of a type that the container is designed to provide. Containers allow a programmer to quickly scale the deployment of applications to the volume of traffic requesting the applications. Containers may be deployed in a variety of hardware environments. To attempt to maximize the usage of computer hardware through parallel processing using virtualization, it may be advantageous to maximize the density of containers in a given hardware environment, for example, in a multi-tenant cloud.
Containers may be clustered together to perform a more complex function than containers are capable of performing individually. A scheduler may be implemented to allocate containers and clusters of containers to various servers. Depending on the functionality of a container or cluster of containers, there may be advantages for different types of deployment schemes.